package net.zjitc.android2019.ch2activity;

import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;

import net.zjitc.android2019.R;

/**
 * 1、Ch2MarketActivity使用的布局文件：ListView 控件
 * 2、列表中每一项显示的内容，使用另一个布局文件：ImageView+TextView
 * 3、自定义适配器（数据——视图）
 * 4、将ListView绑定自定义适配器。
 */
public class Ch2MarketActivity extends AppCompatActivity {
    private ListView listView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_ch2_market);
        listView=findViewById(R.id.ch2_market_listview);
        /* 列表ListView中要显示内容，通过适配器*/
        final MyAdapter adapter=new MyAdapter();
        listView.setAdapter(adapter);

        /* 点击每一项，Toast内容*/
        AdapterView.OnItemClickListener listener=new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                String s=adapter.names[position];
                Toast.makeText(Ch2MarketActivity.this, s, Toast.LENGTH_SHORT).show();
            }
        };
        listView.setOnItemClickListener(listener);

    }

    /* 自定义适配器*/
    class MyAdapter extends BaseAdapter{
        /* 定义列表项要显示的图片和文字数组*/
        int[] img={R.drawable.jd,R.drawable.qq,R.drawable.dz,R.drawable.xl,
           R.drawable.tm,R.drawable.uc,R.drawable.wx};
        String[] names={"京东商城","QQ","QQ斗地主","新浪微博","天猫商城",
                "UC浏览器","微信"};
        /**
         * 得到 列表的项数/总数
         * @return
         */
        @Override
        public int getCount() {
            return names.length;
        }

        /**
         * 得到列表项对象
         * @param position
         * @return
         */
        @Override
        public Object getItem(int position) {
            return names[position];
        }

        /**
         * 得到列表项id（第几项）
         * @param position
         * @return
         */
        @Override
        public long getItemId(int position) {
            return position;
        }

        /**
         * 得到列表View 视图
         * @param position
         * @param convertView
         * @param parent
         * @return
         */
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            /*
            * 把内容（图片+文字  数组）展示在控件（ImageView+TextView）：
            *  1、关联布局文件
            *  2、关联控件
            *  3、给控件设置内容 set*/
            /*View view=View.inflate(Ch2MarketActivity.this,R.layout.activity_ch2_market_item,null);
            ImageView imageView=view.findViewById(R.id.ch2_market_item_image);
            TextView textView=view.findViewById(R.id.ch2_market_item_tv);

            imageView.setImageResource(img[position]);
            textView.setText(names[position]);

            return view;*/

            /* 数据量过大时，为了优化ListView减少耗时操作，利用ViewHolder类
            * 将要加载的子View放在ViewHolder类中，
              当第一次创建convertView时将这些控件找出，
              在第二次重用convertView时就可直接通过convertView中的getTag()方法获得这些控件*/
            ViewHolder viewHolder=new ViewHolder();
            if(convertView==null){
                /* 第一次：关联布局文件，关联控件*/
                convertView=View.inflate(Ch2MarketActivity.this,R.layout.activity_ch2_market_item,null);
                viewHolder.imageView=convertView.findViewById(R.id.ch2_market_item_image);
                viewHolder.textView=convertView.findViewById(R.id.ch2_market_item_tv);
                convertView.setTag(viewHolder);
            }else{
                /* 以后：重用convertView，通过convertView.getTag()得到这些控件*/
                viewHolder= (ViewHolder) convertView.getTag();
            }

            viewHolder.imageView.setImageResource(img[position]);
            viewHolder.textView.setText(names[position]);

            return convertView;
        }
    }



    /* 将要加载的子View(每一项item)放在ViewHolder类*/
    class ViewHolder{
        ImageView imageView;
        TextView textView;
    }

}
